package com.tdam2013.grupo09.actividades;

import com.tdam2013.grupo09.R;
import com.tdam2013.grupo09.BD.BD;
import com.tdam2013.grupo09.actividades.MenuNavegacion.ContactoSeleccionado;
import com.tdam2013.grupo09.entidades.Contacto;
import com.tdam2013.grupo09.funcionalidad.Accion;
import com.tdam2013.grupo09.funcionalidad.NetworkConnectivity;
import com.tdam2013.grupo09.notificaciones.Dialogo;
import android.net.Uri;
import android.os.Bundle;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.view.View.OnClickListener;


public class InfoContacto extends FragmentActivity {
	
	ImageButton btnMensajeWeb;
	ImageButton btnLlamar;
	ImageButton btnSMS;
	ImageButton btnMail;
	ImageButton btnUbicacion;
	private Contacto contacto = ContactoSeleccionado.getContacto();
	static TextView usuarioWeb;
	static TextView lblUsuarioWeb;
	static MenuItem cambiarUsuario;
	NetworkConnectivity net= new NetworkConnectivity();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_contacto);
		IntentFilter filterCambio= new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
		registerReceiver(net,filterCambio);

		btnMensajeWeb = (ImageButton) findViewById(R.id.btnMensajeWeb);
		btnLlamar = (ImageButton) findViewById(R.id.btnLlamar);
		btnSMS = (ImageButton) findViewById(R.id.btnSMS);
		btnMail = (ImageButton) findViewById(R.id.btnMail);
		btnUbicacion = (ImageButton) findViewById(R.id.btnVerUbicacion);		

		btnLlamar.setOnClickListener(new OnClickListener() { // accion de presionar boton llamar
																
					@Override
					public void onClick(View v) {
						if (contacto.getNumerosTelefonicos().size() > 1) {
							Dialogo dialog = Dialogo.newInstance(1);
							dialog.show(getSupportFragmentManager(), "Dialogo");
						} 
						else {
							Accion.llamar(contacto.getNumerosTelefonicos().get(0).getNumero(), contacto.getNombre(),InfoContacto.this);
						}
					}
				});

		btnSMS.setOnClickListener(new OnClickListener() { // accion de presionar boton SMS
															
			@Override
			public void onClick(View v) {
				Accion.enviarSMS(contacto.getNumerosTelefonicos().get(0).getNumero(), contacto.getNombre(), InfoContacto.this);
			}
		});

		btnMail.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {

				if (contacto.getEmails().size() > 1) {
					Dialogo dialog = Dialogo.newInstance(3);
					dialog.show(getSupportFragmentManager(), "Dialogo");
				} else {
					Accion.enviarMail(contacto.getEmails().get(0).getEmail(),contacto.getNombre(), InfoContacto.this);
				}

			}
		});

		btnMensajeWeb.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {

				BD bd = new BD(InfoContacto.this);

				String nombreUsuarioWebContacto = bd.tieneUsuarioWebRegistrado(contacto.getId());
				if (nombreUsuarioWebContacto == null) {
					Dialogo dialog = Dialogo.newInstance(4);
					dialog.show(getSupportFragmentManager(), "Dialogo");
				} else {
					startActivity(new Intent(InfoContacto.this,MensajeriaWebActivity.class));
				}
			}
		});

		btnUbicacion.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Accion.verUbicacion(InfoContacto.this);
			}
		});

	}
	
	public static void setUsuario(String usuario){	
		usuarioWeb.setText(usuario);
		usuarioWeb.setVisibility(View.VISIBLE);
		lblUsuarioWeb.setVisibility(View.VISIBLE);
	
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		
		if(contacto!=null)
		{	
		getMenuInflater().inflate(R.menu.activity_contacto, menu);
		cambiarUsuario=menu.getItem(0);
	    cambiarUsuario.setEnabled(true);
		}
		
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		Dialogo dialog = Dialogo.newInstance(5);
		dialog.show(getSupportFragmentManager(), "Dialogo");
		return super.onOptionsItemSelected(item);
	}
	
	

	

	@Override
	protected void onResume() {
		cargarDatosContacto();
		super.onResume();
	}

	/**
	 * muestra los elementos de la actividad de acuerdo a los datos que posee el contacto seleccionado
	 */
	private void cargarDatosContacto() {
		
		TextView telContacto = (TextView) findViewById(R.id.txtInfoNumTel);
		TextView emailContacto = (TextView) findViewById(R.id.txtEmail);
		TextView lbltelContacto = (TextView) findViewById(R.id.lblNumTel);
		TextView lblemailContacto = (TextView) findViewById(R.id.lblEmail);
		TextView nombreContacto = (TextView) findViewById(R.id.txtnombreContacto);
		lblUsuarioWeb = (TextView) findViewById(R.id.lblusuarioWeb);
		usuarioWeb = (TextView) findViewById(R.id.txtUsuarioWeb);
		TextView direccion = (TextView) findViewById(R.id.txtDireccion);
		TextView lblDireccion = (TextView) findViewById(R.id.lblDireccion);
		ImageView imagenContacto = (ImageView) findViewById(R.id.imagenContacto);
		
		try{

		if(contacto.getNombre() != null)
		nombreContacto.setText(contacto.getNombre()); // carga nombre del contacto

		if (contacto.getFoto() != null)
			imagenContacto.setImageURI(Uri.parse(contacto.getFoto())); // carga foto del contacto			
		else
			imagenContacto.setImageResource(R.drawable.contacto);

		if (contacto.getDireccion() != null) // carga direccion del contacto si existe								
		{
			direccion.setText(contacto.getDireccion());
		} else {
			lblDireccion.setVisibility(View.GONE);
			direccion.setVisibility(View.GONE);
			btnUbicacion.setVisibility(View.GONE);
		}

		if (!contacto.getNumerosTelefonicos().isEmpty()) // carga nros de telefono si existen		
		{
			String numeros = contacto.getNumerosTelefonicos().get(0).getNumero();
			for (int i = 1; i < contacto.getNumerosTelefonicos().size(); i++) {
				numeros += "\n"	+ contacto.getNumerosTelefonicos().get(i).getNumero();
			}
			telContacto.setText(numeros);
		} 
		else {
			btnLlamar.setVisibility(View.GONE);
			btnSMS.setVisibility(View.GONE);
			telContacto.setVisibility(View.GONE);
			lbltelContacto.setVisibility(View.GONE);
		}

		if (!contacto.getEmails().isEmpty()) // carga direcciones de email si existen
		{
			String emails = contacto.getEmails().get(0).getEmail();
			for (int i = 1; i < contacto.getEmails().size(); i++) {
				emails += "\n" + contacto.getEmails().get(i).getEmail();
			}
			emailContacto.setText(emails);
		} 
		else {
			emailContacto.setVisibility(View.GONE);
			btnMail.setVisibility(View.GONE);
			lblemailContacto.setVisibility(View.GONE);
		}

		BD bd = new BD(InfoContacto.this);
		String userWeb = bd.tieneUsuarioWebRegistrado(contacto.getId()); // muestra usuario web si existe
		
		if (userWeb != null) {
			usuarioWeb.setText(userWeb);
			contacto.setUsuarioWeb(userWeb);			
		} 
		else {
			/*if(cambiarUsuario!=null)
			cambiarUsuario.setEnabled(false);*/
			lblUsuarioWeb.setVisibility(View.GONE);
			usuarioWeb.setVisibility(View.GONE);
		}
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}

	@Override
	public View getCurrentFocus() {
		TextView usuarioWeb = (TextView) findViewById(R.id.txtUsuarioWeb);
		usuarioWeb.setText(44444);
		
		return super.getCurrentFocus();
	}
	
	

}
